package br.com.velp.sudecap.entidade;

import br.com.velp.sudecap.enumerator.EnumSimNao;
import br.com.velp.sudecap.hibernate.intercept.Auditable;
import java.util.Date;
import javax.persistence.*;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 06.11.2012 </data_criacao>
 * <data_ultima_alteracao> 04.10.2013 </data_ultima_alteracao>
 * <requisitos_afetados> RF001.03 - Cadastrar Usuários </requisitos_afetados>
 * <descricao> Bean Responsável Pelo Mapeamento da Tabela LOCAL </descricao>
 * </sumario>
 */
@Entity
@Table(name = "LOCAL")
@Auditable(logTableName = "LOCAL_LOG")
public class Local extends EntityBase{
    
    public static final Long serialVersionUID = 1l;
    
    @Id
    @SequenceGenerator(name = "SQ_ID_LOCAL", sequenceName = "SQ_ID_LOCAL", allocationSize = 1)
    @GeneratedValue(generator = "SQ_ID_LOCAL")        
    @Column(name = "ID_LOCAL", nullable = false, unique = true)    
    private Long id;
    
    @Column(name = "USU_CADASTRO", nullable = false)    
    private Long idUsuarioCadastro;
    
    @Column(name = "USU_ALTERACAO")    
    private Long idUsuarioAlteracao;
    
    @Column(name = "NOME", nullable = false, length = 150)    
    private String nome;
    
    @Column(name = "ATIVO", nullable = false)    
    private boolean ativo;
    
    @Column(name = "DATA_CADASTRO", nullable = false)    
    @Temporal(javax.persistence.TemporalType.TIME)
    private Date dataCadastro;
    
    @Column(name = "DATA_ALTERACAO")    
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date dataAlteracao;

    public Local() {
    }

    public Local(Long id) {
	this.id = id;
    }

    public Long getId() {
	return id;
    }

    public void setId(Long id) {
	this.id = id;
    }

    public Long getIdUsuarioAlteracao() {
        return idUsuarioAlteracao;
    }

    public void setIdUsuarioAlteracao(Long idUsuarioAlteracao) {
        this.idUsuarioAlteracao = idUsuarioAlteracao;
    }

    public Long getIdUsuarioCadastro() {
        return idUsuarioCadastro;
    }

    public void setIdUsuarioCadastro(Long idUsuarioCadastro) {
        this.idUsuarioCadastro = idUsuarioCadastro;
    }

    public String getNome() {
	return nome;
    }

    public void setNome(String nome) {
	this.nome = nome;
    }

    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }
    
    public String getAtivoStr() {
        return this.ativo ? EnumSimNao.SIM.getValue() : EnumSimNao.NAO.getValue();
    }
    
    public void setAtivoStr(String value) {
        this.ativo = EnumSimNao.SIM.getValue().equals(value);
    }

    public Date getDataAlteracao() {
        return dataAlteracao;
    }

    public void setDataAlteracao(Date dataAlteracao) {
        this.dataAlteracao = dataAlteracao;
    }

    public Date getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }
    
}
